package enhanced.neural.network.model;

import lombok.AllArgsConstructor;
import lombok.Data;

import java.io.Serializable;

/**
 * 模型参数类，仅包含推理必需的参数
 */
@Data
@AllArgsConstructor
public class ModelParameters implements Serializable {
    private static final long serialVersionUID = 1L;

    // 权重矩阵
    private double[][] W1;
    private double[][] W2;
    private double[][] W3;

    // 偏置向量
    private double[] b1;
    private double[] b2;
    private double[] b3;

    // 第一层批量归一化参数
    private double[] gamma1;
    private double[] beta1;
    private double[] runningMean1;
    private double[] runningVar1;

    // 第二层批量归一化参数
    private double[] gamma2;
    private double[] beta2;
    private double[] runningMean2;
    private double[] runningVar2;

    // 数据标准化参数
    private double[] dataMean;
    private double[] dataStd;

    // 网络结构参数
    private int inputSize;
    private int hiddenSize1;
    private int hiddenSize2;
    private int outputSize;

    // 批量归一化超参数
    private double bnEpsilon;


}